package com.jyx.qrcode;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.Date;

import javax.imageio.ImageIO;

import com.swetake.util.Qrcode;

public class QrcodeImage {

	
	/**
	 * @author JYX
	 * @param content 二维码的内容
	 * @param imagePath 二维码的保存路径
	 */
	public static void myQrcodeImage(String content,String imagePath){
		try{
			//实例化Qrcode对象
			Qrcode qrcode = new Qrcode();
			//设置二维码的排错率：L（79%），M(15%),Q(25%),H(30%)
			qrcode.setQrcodeErrorCorrect('M');
			qrcode.setQrcodeEncodeMode('H');
			//设置二维码的尺寸（1-40)
			qrcode.setQrcodeVersion(7);
			//设置图片尺寸
			BufferedImage bufImg = new BufferedImage(140, 140,BufferedImage.TYPE_INT_BGR);
			//会只二维码的图片
			Graphics2D gs = bufImg.createGraphics();
			//设置矩形区域的背景颜色为白色
			gs.setBackground(Color.WHITE);
			//创建一个二维码的矩形区域
			gs.clearRect(0, 0, 140, 140);
			//设置二维码的颜色值
			gs.setColor(Color.RED);
			//获取内容的字符数组，设置编码集
			byte[] contentBytes = content.getBytes("gb2312");
			//设置偏移量
			int pixoff = 2;
			
			//输出二维码
			if(content.length() > 0 && content.length() < 120){
				boolean[][] codeOut = qrcode.calQrcode(contentBytes);
				for (int i = 0; i < codeOut.length; i++) {
					for (int j = 0; j < codeOut.length; j++) {
						if(codeOut[j][i]){
							gs.fillRect(j*3+pixoff, i*3+pixoff,3,3);//每一个小点点的宽和高
						}
					}
				}
			}else{
				System.out.println("您输入的内容长度过大，无法生成二维码。");
			}
			//生成图片
			gs.dispose();
			//刷新缓冲区
			bufImg.flush();
			//生成二维码图片
			File imageFile = new File(imagePath);
			ImageIO.write(bufImg,"png",imageFile);
			System.out.println("二维码生成了，太帅了");
		}catch(Exception e){
			e.printStackTrace();//打印异常的堆栈信息
		}
	}
	
	public static void main(String[] args){
		System.out.print("这里是QrcodeImage类里面的主方法！");
		
		String content = "www.baidu.com";
		String imagePath = "D:\\JYX"+new Date().getTime()+".png";
		myQrcodeImage(content,imagePath);
	}
}

